#ifndef GAMEPLAYSTATE_H_
#define GAMEPLAYSTATE_H_

#include "GameState.h"
#include "Client.h"

class GamePlayState : public GameState
{
public:
    virtual ~GamePlayState();
    virtual GraphicalElement* createGraphics();
    virtual void init();

    virtual GameState* handleLeftKey();
    virtual GameState* handleRightKey();
    virtual GameState* handleDownKey();
    virtual GameState* handleSpaceKey();
    virtual GameState* handleUpKey();
    virtual GameState* leaveGame();
    virtual GameState* goToGameOverState(const std::string& winner);
    GameState* handleEvent(const Event& event);

protected:
    GamePlayState(ClientPtr client, unsigned int widthOfWell);

private:
    ClientPtr client;
    unsigned int widthOfWell;
};

#endif
